#include <bits/stdc++.h>
using namespace std;
using ll = long long;

string S[202020];
int dp[1 << 20];

bool cmp(const string& a, const string& b) {
  if (a + b < b + a) return 1;
  if (a + b > b + a) return 0;
  if (a.size() < b.size()) return 1;
  if (a.size() > b.size()) return 0;
  return 0;
}

int main() {
  int N, K;
  cin >> N >> K;

  set<string> cand;
  for (int i = 0; i < N; i++) {
    cin >> S[i];
    cand.insert(S[i]);
  }
  sort(S, S + N, cmp);

  string T;
  for (int i = 0; i < K; i++) T += S[0];

  int Len = T.size();
  for (int i = 0; i <= Len; i++) dp[i] = -1000000;

  dp[0] = 0;
  for (int i = 0; i <= Len; i++) {
    if (dp[i] < 0) continue;

    if (dp[i] == K) {
      cout << T.substr(0, i) << endl;
      return 0;
    }
    for (int j = 1; j <= 10; j++)
      if (i + j <= Len) {
        if (cand.count(T.substr(i, j))) dp[i + j] = max(dp[i + j], dp[i] + 1);
      }
  }
  cout << T << endl;
  return 0;
}